//
//  Person.h
//  08-iOS9新特性(Nullability,泛型,_kindof)
//
//  Created by dllo on 16/7/13.
//  Copyright © 2016年 高雅馨. All rights reserved.
//

#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN

@interface Person : NSObject
/**
 *  Nullability(只能用在对象类型上) 是在编译层次上加了一些改动
 * nonnull 声明的属性, 不能为空 (getter 和 setter 方法)
 */
//@property (nonnull, nonatomic, copy) NSString *name;
// __nonnull 在声明属性的类型后加__nonnull
@property (nonatomic, copy) NSString * __nonnull name;
// nullable 声明的属性,是可以为空的(getter 和 setter 方法)
@property (nonatomic, copy) NSString *__nullable sex;
// setter 是nullable getter 是 nonnull
// VC的view属性
@property (null_resettable, nonatomic, strong) NSArray *friends;
@property (nonatomic, strong) NSDictionary *dic;

/**
 *  NS_ASSUME_NONNULL_BEGIN
 *  NS_ASSUME_NONNULL_END
 * 一般应用于头文件.h, 一般将声明包含起来
 * 针对所有属性, 添加nonnull 修饰
 * 也就是说, 除了nullable 和 null_resttable 需要加修饰, 其他都不需要
 * 还可以用于方法返回值  参数也可以  
 
 */

// 不可以这样做
// @property (nonnull, nonatomic, assign) NSInteger number;
@end
NS_ASSUME_NONNULL_END
